// pages/video/video.js
import request from '../../utils/request'
Page({

  toSearch() {
    wx.navigateTo({
      url: '/pages/search/search',
    });
  },

  /**
   * 页面的初始数据
   */
  data: {
    navList: [],//导航菜单的数据
    navId: '',//菜单选择的id标识
    videoList: [],//视频列表
    videoId: '',//正在播放的视频的id
    updateTimeList: [],//正在播放的视频的vid与实时时间
    isTriggered: false//下拉刷新的状态

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

    // 判断用户信息是否存在
    let userInfo = wx.getStorageSync('userInfo')
    if (!userInfo) {
      //没有登录 跳转到登录页面
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        success: () => {
          wx.redirectTo({
            url: '/pages/login/login'
          });
        }
      });
    }

    // 获取导航菜单列表的数据
    this.getNavList()

  },

  // 获取导航菜单列表的数据
  async getNavList() {
    const result = await request('/video/group/list')

    const navListData = result.data.splice(0, 18)
    // 默认把第一个菜单的id存储起来
    const navId = navListData[0].id

    // 更新数据
    this.setData({
      navList: navListData,
      navId
    })

    // 直接调用方法  获取视频列表数据
    this.getVideoListData(this.data.navId)
  },

  changeNavId(event) {
    const navId = event.currentTarget.id
    // console.log(navId)
    // 更新数据
    this.setData({
      navId: navId * 1,
      navList: []
    })

    this.getVideoListData(this.data.navId)

  },

  // 获取视频列表的数据
  async getVideoListData(id) {
    // 加载的提示信息
    wx.showLoading({
      title: "正在加载中..."
    });


    const videoListData = await request('/video/group', { id })

    // 关闭提示
    wx.hideLoading()

    // 改变下拉刷新的状态
    this.setData({
      isTriggered: false
    })

    // console.log(videoListData)
    let index = 0
    const videoList = videoListData.datas.map(item => {
      item.id = index++
      return item
    })

    // 更新数据
    this.setData({
      videoList
    })
  },

  // 控制视频播放
  handlerPlay(event) {
    // 获取视频信息的id标识
    const vid = event.currentTarget.id

    // 创建控制视频播放的对象
    this.videoContext = wx.createVideoContext(vid)

    // 存储正在播放视频的id
    this.setData({
      videoId: vid
    })

    // 播放时候 取出存储的vid和实时时间的对象对应的数组
    const { updateTimeList } = this.data
    const videoItem = updateTimeList.find(item => item.vid === vid)
    if (videoItem) {
      // 找到之前存储的时间数据  直接跳转到指定位置  继续播放
      this.videoContext.seek(videoItem.currentTime)
    }


    this.videoContext.play()
  },

  // 视频实时播放的进度变化
  handlerUpdateTime(event) {
    const { updateTimeList } = this.data

    //存储播放视频的id标识和实时的播放时间
    const updateTime = {
      vid: event.currentTarget.id,
      currentTime: event.detail.currentTime
    }

    // 判断数组中是否存储过这个对象
    let updateTimeItem = updateTimeList.find(item => item.vid === updateTime.vid)
    if (updateTimeItem) {
      // 存在  更新时间
      updateTimeItem.currentTime = event.detail.currentTime
    } else {
      // 不存在  添加到数组当中
      updateTimeList.push(updateTime)
    }

    // 更新数据
    this.setData({
      updateTimeList
    })
  },

  // 视频播放结束 删除存储的时间数据
  handlerEnd(event) {
    let vid = event.currentTarget.id
    const { updateTimeList } = this.data

    updateTimeList.splice(updateTimeList.findIndex(item => item.vid === vid), 1)

    this.setData({
      updateTimeList
    })

  },

  // 下拉刷新
  handlerRefresh() {
    this.getVideoListData(this.data.navId)
  },

  // 上拉加载
  handlerTolower() {
    const { videoList } = this.data
    // 将来调用接口  获取其他部分的数据
    const newArr = [...videoList.slice(0, 8)]
    // 判断新的数据是否出现
    if (newArr.length) {
      videoList.push(...newArr)
    }

    // 更新数据
    this.setData({
      videoList
    })
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage({ from }) {
    if (from === 'button') {
      return {
        title: '转发视频来自button',
        path: '/pages/video/video',
        imageUrl: '/static/images/lyml.jpg'
      }
    } else {
      return {
        title: '转发视频来自menu',
        path: '/pages/video/video',
        imageUrl: '/static/images/lyml.jpg'
      }
    }

  }
})